
/**
 * 用户认证相关工具
 * 提供登录状态判断、token管理、用户信息管理等
 */
const Storage = require('./storage')
const { CACHE_KEYS } = require('./constants')


const Auth = {
  /**
   * 是否已登录
   */
  isLoggedIn() {
    const token = Storage.get(CACHE_KEYS.TOKEN)
    console.log('用户登录状态:', !!token)

    return !!token
  },

  /**
   * 获取当前token
   */
  getToken() {
    return Storage.get(CACHE_KEYS.TOKEN) || ''
  },

  /**
   * 设置token
   */
  setToken(token) {
    return Storage.set(CACHE_KEYS.TOKEN, token)
  },

  /**
   * 获取refresh_token
   */
  getRefreshToken() {
    return Storage.get('refresh_token') || ''
  },

  /**
   * 设置refresh_token
   */
  setRefreshToken(refreshToken) {
    return Storage.set('refresh_token', refreshToken)
  },

  /**
   * 获取token过期时间
   */
  getTokenExpiresIn() {
    return Storage.get('token_expires_in') || 0
  },

  /**
   * 设置token过期时间
   */
  setTokenExpiresIn(expiresIn) {
    return Storage.set('token_expires_in', expiresIn)
  },

  /**
   * 获取token创建时间
   */
  getTokenCreatedAt() {
    return Storage.get('token_created_at') || 0
  },

  /**
   * 设置token创建时间
   */
  setTokenCreatedAt(createdAt) {
    return Storage.set('token_created_at', createdAt)
  },

  /**
   * 获取当前用户信息
   */
  getUserInfo() {
    return Storage.get(CACHE_KEYS.USER_INFO) || null
  },

  /**
   * 设置用户信息
   */
  setUserInfo(userInfo) {
    return Storage.set(CACHE_KEYS.USER_INFO, userInfo)
  },

  /**
   * 清除登录信息
   */
  clearLogin() {
    Storage.remove(CACHE_KEYS.TOKEN)
    Storage.remove('refresh_token')
    Storage.remove('token_expires_in')
    Storage.remove('token_created_at')
    Storage.remove(CACHE_KEYS.USER_INFO)
    Storage.remove('is_new_user')
  },

  /**
   * 是否新用户
   */
  isNewUser() {
    return !!Storage.get('is_new_user')
  },

  /**
   * 清除新用户标记
   */
  clearNewUserFlag() {
    Storage.remove('is_new_user')
  }
}

module.exports = Auth
